Next: Automatic Rewrites, Previous: Selections with Rewrite Rules, Up: Rewrite Rules [Contents][Index]
The a m (calc-match)
[match] function takes a vector of formulas and a
rewrite-rule-style pattern, and produces a vector of all formulas
which match the pattern. The command prompts you to enter the
pattern; as for a r, you can enter a single pattern
(i.e., a formula with meta-variables), or a vector of patterns,
or a variable which contains patterns, or you can give a blank
response in which case the patterns are taken from the top of the
stack. The pattern set will be compiled once and saved if it is
stored in a variable. If there are several patterns in the set,
vector elements are kept if they match any of the patterns.
For example, ‘match(a+b, [x, x+y, x-y, 7, x+y+z])’ will return ‘[x+y, x-y, x+y+z]’.
The import mechanism is not available for pattern
sets.
The a m command can also be used to extract all vector elements which satisfy any condition: The pattern ‘x :: x>0’ will select all the positive vector elements.
With the Inverse flag [matchnot], this command
extracts all vector elements which do not match the
given pattern.
There is also a function ‘matches(x, p)’ which evaluates to 1 if expression x matches pattern p, or to 0 otherwise. This is sometimes useful for including into the conditional clauses of other rewrite rules.
The function vmatches is just like
matches, except that if the match succeeds it
returns a vector of assignments to the meta-variables instead of
the number 1. For example, ‘vmatches(f(1,2),
f(a,b))’ returns ‘[a := 1, b :=
2]’. If the match fails, the function returns the
number 0.
Next: Automatic Rewrites, Previous: Selections with Rewrite Rules, Up: Rewrite Rules [Contents][Index]